// 绑定NFC标签页面

// 导入formatTime工具函数
const { formatTime } = require('../../utils/util');

Component({
  data: {
    scanning: false,
    tagId: '',
    tagName: '',
    hasNfc: false,
    errorMsg: ''
  },

  lifetimes: {
    attached() {
      // 检查设备是否支持NFC
      // 强制设置为支持NFC，以便在开发环境中可以测试
      const hasNfc = true;
      wx.setStorageSync('hasNfc', hasNfc);
      this.setData({
        hasNfc
      });
    }
  },

  methods: {
    // 开始扫描NFC标签
    startScan() {
      if (!this.data.hasNfc) {
        wx.showToast({
          title: '设备不支持NFC功能',
          icon: 'none'
        })
        return
      }

      this.setData({
        scanning: true,
        errorMsg: '',
        tagId: '' // 确保开始扫描时清空之前的标签ID
      })

      // 使用实际的NFC API
      try {
        const nfcAdapter = wx.getNFCAdapter()
        nfcAdapter.startDiscovery({
          success: () => {
            console.log('开始NFC扫描')
            wx.showLoading({ title: '正在扫描，请将徽章靠近手机...' })
            nfcAdapter.onDiscovered(res => {
              console.log('发现NFC标签:', res)
              // 格式化标签ID，添加冒号分隔并转换为大写
              const rawTagId = Array.from(new Uint8Array(res.id)).map(b => b.toString(16).padStart(2, '0')).join('');
              // 每两个字符添加一个冒号并转为大写
              const formattedTagId = rawTagId.match(/.{1,2}/g).join(':').toUpperCase();
              this.setData({
                tagId: formattedTagId,
                scanning: false
              })
              nfcAdapter.stopDiscovery()
              wx.hideLoading()
              wx.showToast({
                title: '扫描成功',
                icon: 'success'
              })
            })
          },
          fail: (err) => {
            console.error('NFC扫描失败:', err)
            this.setData({
              scanning: false,
              errorMsg: 'NFC扫描失败，请确保已开启NFC功能'
            })
            wx.hideLoading()
          }
        })
      } catch (e) {
        console.error('NFC API调用失败:', e)
        this.setData({
          scanning: false,
          errorMsg: 'NFC功能暂不可用'
        })
        wx.hideLoading()
      }
    },

    // 输入标签名称
    onNameInput(e) {
      this.setData({
        tagName: e.detail.value
      })
    },

    // 绑定标签
    bindTag() {
      const { tagId, tagName } = this.data
      const app = getApp()

      if (!tagId) {
        wx.showToast({
          title: '请先扫描标签',
          icon: 'none'
        })
        return
      }

      if (!tagName.trim()) {
        wx.showToast({
          title: '请输入标签名称',
          icon: 'none'
        })
        return
      }

      // 创建标签对象
      const tag = {
        id: tagId,
        name: tagName.trim(),
        musicUrl: '',
        bindTime: formatTime(new Date())
      }

      // 保存标签
      app.saveUserTag(tag)

      wx.showToast({
        title: '标签绑定成功',
        icon: 'success'
      })

      // 延迟跳转到音乐配置页面
      setTimeout(() => {
        wx.navigateTo({
          url: `/pages/music-config/music-config?tagId=${tagId}&tagName=${encodeURIComponent(tagName)}`
        })
      }, 1500)
    },

    // 返回上一页
    goBack() {
      wx.navigateBack()
    }
  }
})